import { IState, ITodo, TODO_STATUS } from "@/typing";
import { REMOVE_TODO, SET_DOING, SET_STATUS, SET_TODO, SET_TODO_LIST } from "./actionType";

export default {
    [SET_TODO](state: IState, todo: ITodo): void {
        state.list = [todo, ...state.list]
    },
    [SET_TODO_LIST](state: IState, todoList: ITodo[]): void {
        state.list = todoList
    },
    [SET_STATUS](state: IState, id: number): void {
        state.list = state.list.map((mItem: ITodo) => {
            if (mItem.id === id) {
                if (mItem.status !== TODO_STATUS.FINISHED) {
                    mItem.status = TODO_STATUS.FINISHED
                } else {
                    mItem.status = TODO_STATUS.WILLDO
                }
            }
            return mItem
        })
    },
    [REMOVE_TODO](state: IState, id: number): void {
        state.list = state.list.filter((fItem: ITodo) => fItem.id !== id)
    },
    [SET_DOING](state: IState, id: number): void {
        state.list = state.list.map((mItem: ITodo) => {
            if (mItem.id === id) {
                switch (mItem.status) {
                    case TODO_STATUS.WILLDO:
                        mItem.status = TODO_STATUS.DOING
                        break;
                    case TODO_STATUS.DOING:
                        mItem.status = TODO_STATUS.WILLDO
                        break;
                }
            }
            return mItem

        })
    }
}